type MapPerson<T> = {
  -readonly [Property in keyof T]-?: T[Property]
}

interface IPerson {
  name: string
  age?: number
  readonly height: number
  address?: string
}

type IPersonOptional = MapPerson<IPerson>

const p: IPersonOptional = {}

export { }